iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Modern Web

Backend Developer的學習Roadmap系列 第 12

Day 12 Authentication - Cookie-Based Authentication

  • 分享至 

  • xImage
  •  

今天我們要來了解Cookie-Based Authentication~

cookie

cookie是網站儲存在user設備上的小文件,例如使用者設定,保持登錄狀態,甚至是廣告的個性化等等,這些都有可能儲存在我們的設備上,所以有些網站一進去就會問你要不要儲存它們家的cookie XD
通常cookie包含許多私人的訊息,因此我們可以自行在瀏覽器中管理和刪除cookie,來保護我們的隱私(順便清空間?)

Cookie-Based Authentication

那麼cookie-based Authentication想當然就是利用cookie來認證,它是怎麼做到的呢?

當使用者登錄成功後,server會給一個sessionId儲存在使用者的cookie裡面,之後的請求,瀏覽器都會將該cookie帶到header當中,server就可以透過檢查此cookie來驗證user的身分啦。

我們會覺得它跟Token-Based Authentication很像,只是一個用token,一個用cookie,它們的差異是甚麼呢?

比較

特點 Cookie-Based Authentication Token-Based Authentication
存儲位置 Session ID存儲在瀏覽器的Cookie中 Token存儲在客戶端(可以是瀏覽器的 Local Storage或Cookie)
跨域支持 跨域支持有限(需要配置 CORS 和 Cookies) 跨域支持更好
狀態性 狀態性,session存在於服務器上 無狀態性,服務器不存儲session訊息
使用場景 傳統的多頁應用 單頁應用(SPA)、移動應用、API 驅動的應用
用戶登出 服務器端需要銷毀session 客戶端可以直接丟棄 Token

他們之間還是有不一樣的地方,例如cookie就需要額外一些設置才能支援CORS,而token不依賴cookie,不受瀏覽器同源策略的限制。

優缺點分析

優點

  • 交給瀏覽器自動處理cookie
  • 支持session管理
  • Cookies 可以設置 HttpOnly 標記,使得它們無法被 JavaScript 訪問,從而減少了XSS攻擊的風險。Secure 標記確保 Cookies 僅在 HTTPS 連接中傳輸,增強了通信的安全性。
  • 簡單實作
  • 廣泛支援,幾乎所有瀏覽器都支持這種身分認證方式

缺點

  • Cookies在同源策略下會自動發送,這使得攻擊者可以利用 CSRF 攻擊來冒充用戶發送惡意請求。
  • Cookies 的跨域支持較為有限,因為它受到瀏覽器同源策略的影響。跨域請求中 Cookies 預設不會被發送,除非進行特定的 CORS 配置。這在前後端分離的app可能會引發問題。
  • Cookie-Based Authentication通常依賴於server的session管理,這意味著每個user的session狀態都需要在服務器上存儲,對於高user吞吐量的應用來說,可能會增加服務器的負擔。
  • 如果 Cookie 中存儲了敏感信息(如明文的Session ID或其他憑證),而沒有適當的保護措施,這些信息可能被攻擊者截獲並利用。
  • 在某些情況下,攻擊者可能會利用已知的Session ID來進行Session固定攻擊,冒充用戶進行未經授權的操作。

總結

今天我們知道了cookie-based authentication的工作流程,並了解了它的優缺點,對認證這塊又更加清楚了。

reference

https://stackoverflow.com/questions/17769011/how-does-cookie-based-authentication-work


上一篇
Day 11 Authentication - Basic Authentication
下一篇
Day 13 Caching
系列文
Backend Developer的學習Roadmap30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言